#ifndef LW_LIST_H
#define LW_LIST_H

#include <string>

/**
 * The base container for all lists.
 * (abstract)
 */
template<typename T>
class List {
public:

    virtual ~List() {
    }

    //Adds the specified element to this list.
    virtual inline List & operator<<(const T& e) = 0;

    //Removes all elements from this list.
    virtual inline void Clear() = 0;

    //Returns the number of elements in this list.
    virtual inline int Size() const = 0;

    //Returns true if this list has no elements.
    virtual inline bool Empty() const = 0;

};

#endif //LW_LIST_H
